package com.example.springbootdemo.文件上传;

import com.alibaba.fastjson.JSON;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@RestController
public class FileHandler {
    /**
     * 单文件
     */
    @PostMapping("/importTest1")
    @ResponseBody
    public String importTest1(@RequestParam MultipartFile file) throws IOException {
        Map<String, Object> map = new HashMap<String, Object>();
        if (file != null) {
            // 设置文件名称
            map.put("nameParam", "test");
            // 设置文件名称
            map.put("fileName", file.getOriginalFilename());
            // 设置文件类型,而不是文件的扩展名，例如图片：image/jpeg
            map.put("contentType", file.getContentType());
            // 设置文件大小
            map.put("fileSize", file.getSize());

            // 获取到文件的路径信息
            RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
            ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
            // 获取"/"在机器中的实际地址
            String filePath = servletRequestAttributes.getRequest().getServletContext().getRealPath("/") + file.getOriginalFilename();
            // 打印保存路径
            System.out.println(filePath);
            // 保存文件的路径信息
            map.put("filePath", filePath);
            // 创建文件
            File saveFile = new File(filePath);
            // 文件保存
            file.transferTo(saveFile);
            return JSON.toJSONString(map);
        }
        return "error";

    }

    /**
     * 多文件
     * @param files
     * @return
     * @throws IOException
     */
    @PostMapping("/importTest2")
    @ResponseBody
    public String importTest2(@RequestParam MultipartFile[] files) throws IOException {
        for (MultipartFile file : files) {
            System.out.println(file.getOriginalFilename());
        }
        return JSON.toJSONString("a");
    }
}
